From 1308ecb0aee7880d6d1a1d9a979c1331eceec6c2 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 22 Mar 2020 13:19:55 -0400 Subject: [PATCH] flattenlistmodel: Give access to child models Add an api to retrieve the model containing a given item in a flatten listmodel. This is useful when the individual items in the list don't have backpointers. --- docs/reference/gtk/gtk4-sections.txt | 1 + gtk/gtkflattenlistmodel.c | 25 +++++++++++++++++++++++++ gtk/gtkflattenlistmodel.h | 4 ++++ 3 files changed, 30 insertions(+) diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt index 13b3f831f6..1f243f2797 100644 --- a/docs/reference/gtk/gtk4-sections.txt +++ b/docs/reference/gtk/gtk4-sections.txt @@ -1316,6 +1316,7 @@ GtkFlattenListModel gtk_flatten_list_model_new gtk_flatten_list_model_set_model gtk_flatten_list_model_get_model +gtk_flatten_list_model_get_model_for_item GTK_FLATTEN_LIST_MODEL GTK_IS_FLATTEN_LIST_MODEL diff --git a/gtk/gtkflattenlistmodel.c b/gtk/gtkflattenlistmodel.c index 3204f5b5ea..f557cb2232 100644 --- a/gtk/gtkflattenlistmodel.c +++ b/gtk/gtkflattenlistmodel.c @@ -539,3 +539,28 @@ gtk_flatten_list_model_get_model (GtkFlattenListModel *self) return self->model; } + +/** + * gtk_flatten_list_model_get_model_for_item: + * @self: a #GtkFlattenListModel + * @position: a position + * + * Returns the model containing the item at the given position. + * + * Returns: (transfer none): the model containing the item at @position + */ +GListModel * +gtk_flatten_list_model_get_model_for_item (GtkFlattenListModel *self, + guint position) +{ + FlattenNode *node; + + if (!self->items) + return NULL; + + node = gtk_flatten_list_model_get_nth (self->items, position, NULL); + if (node == NULL) + return NULL; + + return node->model; +} diff --git a/gtk/gtkflattenlistmodel.h b/gtk/gtkflattenlistmodel.h index 75e39404d7..ec1eaaa84e 100644 --- a/gtk/gtkflattenlistmodel.h +++ b/gtk/gtkflattenlistmodel.h @@ -45,6 +45,10 @@ void gtk_flatten_list_model_set_model (GtkFlattenListM GDK_AVAILABLE_IN_ALL GListModel * gtk_flatten_list_model_get_model (GtkFlattenListModel *self); +GDK_AVAILABLE_IN_ALL +GListModel * gtk_flatten_list_model_get_model_for_item (GtkFlattenListModel *self, + guint position); + G_END_DECLS #endif /* __GTK_FLATTEN_LIST_MODEL_H__ */ -- 2.30.2